package fr.afcepf.al22.projet1.entity;
// default package
// Generated 19 nov. 2014 11:02:30 by Hibernate Tools 3.4.0.CR1

import static javax.persistence.GenerationType.IDENTITY;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Commande generated by hbm2java
 */
@Entity
@Table(name = "commande", catalog = "projet1")
public class Commande implements java.io.Serializable {

	private Integer idCommande;
	private Utilisateur utilisateur;
	//private LigneCommande ligneCommande;
	private Date dateCommande;
	private String etatCommande;
	private String modeLivraisonCommande;
	private Set<LigneCommande> ligneCommandes = new HashSet<LigneCommande>(0);
	private Set<Adresse> adresses = new HashSet<Adresse>(0);

	public Commande() {
	}

	public Commande(Utilisateur utilisateur,
			Date dateCommande, String etatCommande, String modeLivraisonCommande) {
		this.utilisateur = utilisateur;
		//this.ligneCommande = ligneCommande;
		this.dateCommande = dateCommande;
		this.etatCommande = etatCommande;
		this.modeLivraisonCommande = modeLivraisonCommande;
	}

	public Commande(Utilisateur utilisateur,
			Date dateCommande, String etatCommande,
			String modeLivraisonCommande, Set<LigneCommande> ligneCommandes,
			Set<Adresse> adresses) {
		this.utilisateur = utilisateur;
		//this.ligneCommande = ligneCommande;
		this.dateCommande = dateCommande;
		this.etatCommande = etatCommande;
		this.modeLivraisonCommande = modeLivraisonCommande;
		this.ligneCommandes = ligneCommandes;
		this.adresses = adresses;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id_commande", unique = true, nullable = false)
	public Integer getIdCommande() {
		return this.idCommande;
	}

	public void setIdCommande(Integer idCommande) {
		this.idCommande = idCommande;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_utilisateur", nullable = false)
	public Utilisateur getUtilisateur() {
		return this.utilisateur;
	}

	public void setUtilisateur(Utilisateur utilisateur) {
		this.utilisateur = utilisateur;
	}

//	@ManyToOne(fetch = FetchType.LAZY)
//	@JoinColumn(name = "id_ligne_commande", nullable = false)
//	public LigneCommande getLigneCommande() {
//		return this.ligneCommande;
//	}
//
//	public void setLigneCommande(LigneCommande ligneCommande) {
//		this.ligneCommande = ligneCommande;
//	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "date_commande", nullable = false, length = 19)
	public Date getDateCommande() {
		return this.dateCommande;
	}

	public void setDateCommande(Date dateCommande) {
		this.dateCommande = dateCommande;
	}

	@Column(name = "etat_commande", nullable = false, length = 14)
	public String getEtatCommande() {
		return this.etatCommande;
	}

	public void setEtatCommande(String etatCommande) {
		this.etatCommande = etatCommande;
	}

	@Column(name = "mode_livraison_commande", nullable = false, length = 13)
	public String getModeLivraisonCommande() {
		return this.modeLivraisonCommande;
	}

	public void setModeLivraisonCommande(String modeLivraisonCommande) {
		this.modeLivraisonCommande = modeLivraisonCommande;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "commande")
	public Set<LigneCommande> getLigneCommandes() {
		return this.ligneCommandes;
	}

	public void setLigneCommandes(Set<LigneCommande> ligneCommandes) {
		this.ligneCommandes = ligneCommandes;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "adresse_commande", catalog = "projet1", joinColumns = { @JoinColumn(name = "id_commande", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "id_adresse", nullable = false, updatable = false) })
	public Set<Adresse> getAdresses() {
		return this.adresses;
	}

	public void setAdresses(Set<Adresse> adresses) {
		this.adresses = adresses;
	}

}
